// 提供socket函数及数据结构
#include <sys/socket.h>
// 定义数据结构sockaddr_in
// #include <netinet/in.h>
// 提供通用的文件、目录、程序及进程操作的函数,如 read,write等
#include <unistd.h>
// 网络编程常见的头文件
#include <arpa/inet.h>
// 字符串处理 比如 memset
#include <string.h>
// 标准输入输出
#include <stdio.h>

int main()
{
    int cfd = 0;
    cfd = socket(AF_INET,SOCK_STREAM,0);
    if (cfd == -1) {
        // 错误处理
    }
    
    struct sockaddr_in sock_server;
    memset(&sock_server, 0, sizeof(sock_server));
    sock_server.sin_family      = AF_INET;
    sock_server.sin_addr.s_addr = inet_addr("127.0.0.1");
    sock_server.sin_port        = htons(6666);

    int ret = 0;
    ret = connect(cfd, (struct sockaddr *)&sock_server, sizeof(sock_server));
    if (ret == -1) {
        // 错误处理
    }

    char buf[2048] = {0};
    int n = 0;
    char recv[2048] = {0};

    while (1)
    {
        scanf("%s", buf);
        write(cfd,buf,sizeof(buf));
        n = read(cfd, recv, sizeof(recv));
        write(STDOUT_FILENO,recv,n);
    }

    close(cfd);

    return 0;
}